利用iptables防止syn flood攻击

1
2
3
4
iptables -N syn-flood
iptables -A syn-flood -m limit --limit 50/s --limit-burst 10 -j RETURN
iptables -A syn-flood -j DROP
iptables -I INPUT -j syn-flood

        解释:

  • -N 创建一个条新的链
  • –limit 50/s 表示每秒50次; 1/m 则为每分钟一次
  • –limit-burst 表示允许触发 limit 限制的最大包个数 (预设5),它就像是一个容器,最多装10个,超过10个就装不下了,这些包就给后面的规则了
  • -I INPUT -j syn-flood 把INPUT的包交给syn-flood链处理

        这里的–limit-burst=10相当于说最开始我有10个可以匹配的包去转发,然后我匹配的包的个数是根据–limit=50/s进行限制的,也就是每秒限制转发50个数据包,多余的会被下面符合要求的DROP规则去处理,进行丢弃,这样就实现了对数据包的限速问题。